home *** CD-ROM | disk | FTP | other *** search
- /* Constants */
-
- #define NOTELEN 80
- #define EQLEN 80
- #define NUMINDVAR 9
-
-
- /* FORM and CHUNK ID's */
-
- #define ID_3DPL MakeID('3','D','P','L')
- #define ID_DRAW MakeID('D','R','A','W')
- #define ID_AXES MakeID('A','X','E','S')
- #define ID_TICS MakeID('T','I','C','S')
- #define ID_NOTE MakeID('N','O','T','E')
- #define ID_EQUN MakeID('E','Q','U','N')
- #define ID_TYPE MakeID('T','Y','P','E')
-
-
- /* Structure definitions */
-
- typedef struct {
- DOUBLE RotationX, RotationY,
- RotationZ; /* Rotation about each axis
- in degrees */
- LONG OriginX, OriginY; /* Location of origin in window
- by pixels */
- DOUBLE ProjPlane, ViewDist, Scale; /* Location of projection plane along
- the default Z-axis, viewer distance
- from the projection plane in axis
- units, & pixels per axis unit */
- DOUBLE LineSpacingX, LineSpacingY; /* Distance between grid lines
- in axis units */
- DOUBLE PlotXmin, PlotXmax,
- PlotYmin, PlotYmax; /* Plot region in X-Y plane in
- axis units */
- DOUBLE PlotPrecisionX,
- PlotPrecisionY; /* Distance between each plotted point
- along grid lines in axis units */
- } DrawData;
-
-
- typedef struct {
- DOUBLE AxesXmin, AxesXmax,
- AxesYmin, AxesYmax,
- AxesZmin, AxesZmax; /* Axes range in 3 directions in
- axis units */
- DOUBLE AxesPrecision; /* Distance between each plotted point
- along each axis in axis units */
- } AxesData;
-
-
- typedef struct {
- DOUBLE TicX, TicY, TicZ; /* Distance between tic marks in
- axis units */
- ULONG NumTicX, NumTicY, NumTicZ; /* Number of tics between axis number
- labels */
- } TicData;
-
-
- typedef struct {
- UBYTE DependVar; /* Dependent variable */
- UBYTE IndependVar[NUMINDVAR]; /* Independent variables */
- TEXT Equation[EQLEN]; /* Function DependVar = "F(IndependVar)" */
- } EqInfo;
-
-
- typedef struct {
- UBYTE Surface, AxesType,
- RotationOrder, Pad0; /* Surface type, axes type, rotation
- order, & pad */
- } PlotInfo;
-
-
- /* The NOTE can be any string variable */
-
-
- /* Structure that contains all above data */
-
- typedef struct {
- DrawData dd;
- AxesData ad;
- TicData td;
- EqInfo ei;
- PlotInfo pi;
- TEXT nt[NOTELEN];
- } AllPlotData;
-
-
- /* Macros for writing data to file */
-
- #define PutDRAW(context,drawData) \
- PutCk(ID_DRAW,sizeof(DrawData),context,(BYTE *)drawData)
-
- #define PutAXES(context,axesData) \
- PutCk(ID_AXES,sizeof(AxesData),context,(BYTE *)axesData)
-
- #define PutTICS(context,ticData) \
- PutCk(ID_TICS,sizeof(TicData),context,(BYTE *)ticData)
-
- #define PutEQUN(context,eqInfo) \
- PutCk(ID_EQUN,sizeof(EqInfo),context,(BYTE *)eqInfo)
-
- #define PutTYPE(context,plotInfo) \
- PutCk(ID_TYPE,sizeof(PlotInfo),context,(BYTE *)plotInfo)
-
- #define PutNOTE(context,note) \
- PutCk(ID_NOTE,NOTELEN,context,note)
-
-
- /* Definitions for PlotInfo structure */
-
- /* Surface */
-
- #define XONLY 0
- #define YONLY 1
- #define XANDY 2
-
- /* AxesType */
-
- #define AXESTYPENONE 0
- #define AXESTYPESTAR 1
- #define AXESTYPEBOX 2
-
- /* RotationOrder */
-
- #define ROTATEXYZ 0
- #define ROTATEXZY 1
- #define ROTATEYXZ 2
- #define ROTATEYZX 3
- #define ROTATEZXY 4
- #define ROTATEZYX 5
-
-
- /* Symbolic representation */
-
- /*
-
- 3DPL ::= "FORM" #{ "3DPL" [DRAW] [AXES] [TICS] EQUN* [TYPE] [NOTE]* }
-
- DRAW ::= "DRAW" #{ DrawData }
-
- AXES ::= "AXES" #{ AxesData }
-
- TICS ::= "TICS" #{ TicData }
-
- EQUN ::= "EQUN" #{ EqInfo }
-
- TYPE ::= "TYPE" #{ PlotInfo }
-
- NOTE ::= "NOTE" #{ UBYTE* }
-
- */
-